Add Browser UI#311
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR adds a new local “Dashboard UI” (browser-based) workflow for the QuickInstall sandbox, alongside several cross-platform (notably Windows) robustness improvements to the CLI runtime and workspace handling.
Changes:
- Add a PHP-built-in-server-backed Dashboard UI (
src/QuickInstall/Sandbox/Web/*,public/assets/*) with AJAX actions for boards, sources, and customisation mounts. - Introduce update-check caching + notifications (
UpdateService) and a newdoctorcommand to diagnose host requirements (DoctorService). - Improve workspace safety and Windows compatibility (workspace locking, path normalization, process execution, compose/seeding/runtime file handling).
Reviewed changes
Copilot reviewed 51 out of 54 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/Unit/VersionMatrixTest.php | Adjust tests for new PHP runtime resolution and exact 3.3.x tag handling. |
| tests/Unit/UpdateServiceTest.php | Add unit coverage for update-check caching, failures, and URL sanitization. |
| tests/Unit/UiServerServiceTest.php | Add unit coverage for UI server lifecycle, Windows quoting, IPv6 formatting, and log reset. |
| tests/Unit/SourceServiceTest.php | Add unit coverage for git fetch ensuring/rollback behavior. |
| tests/Unit/SourceProviderTest.php | Add unit coverage for git URL validation, runtime detection, and case-insensitive keys. |
| tests/Unit/SeederWriterTest.php | Assert seeder output includes memory-limit and GC handling. |
| tests/Unit/ProjectTest.php | Add unit coverage for Windows path normalization, case-insensitive containment, JSON errors, and cache dir creation. |
| tests/Unit/ProcessRunnerTest.php | Add unit coverage for timeouts, Windows batch handling, deadlock avoidance, and credential redaction. |
| tests/Unit/ExtensionManagerTest.php | Add coverage for rejecting traversal components in composer package names. |
| tests/Unit/DockerComposeWriterTest.php | Add coverage ensuring generated runtime files use Unix line endings. |
| tests/Unit/CustomisationMountServiceTest.php | Add unit coverage for recursive mount aggregation and per-item error collection. |
| tests/Unit/BoardServiceTest.php | Add coverage for case-insensitive board names and safer replacement semantics. |
| tests/Unit/BoardRunnerTest.php | Add coverage for seeder memory-limit flag and container state checks. |
| tests/Integration/WebApplicationTest.php | Add integration coverage for HTML render, CSRF, AJAX JSON behavior, and UI workflows. |
| tests/Integration/BinQiTest.php | Add smoke coverage for doctor, ui:status, and service-loading commands. |
| tests/Integration/ApplicationTest.php | Add coverage for CLI update notice and UI command exposure/behavior. |
| tests/bootstrap.php | Switch test bootstrap to use the new sandbox bootstrap + web app class. |
| style/assets/js/scripts.js | Extend codeblock copy support to PowerShell and batch code blocks. |
| style/assets/css/qi_style.css | Style additional codeblock types (PowerShell/batch) consistently. |
| src/QuickInstall/Sandbox/Web/templates/layout.php | Add base HTML layout for the Dashboard UI shell. |
| src/QuickInstall/Sandbox/Web/templates/dashboard.php | Add Dashboard UI markup for boards/sources/customisations/activity log/update banner. |
| src/QuickInstall/Sandbox/Web/templates/csrf.php | Add a reusable CSRF hidden-field template. |
| src/QuickInstall/Sandbox/Web/Application.php | Implement Dashboard UI controller: local-only checks, CSRF, AJAX JSON rendering, and actions. |
| src/QuickInstall/Sandbox/VersionMatrix.php | Update selector notes and refine git/custom runtime resolution and exact-tag PHP mapping. |
| src/QuickInstall/Sandbox/UpdateService.php | Add update-check fetch + cache with TTLs and URL sanitization. |
| src/QuickInstall/Sandbox/UiServerService.php | Add background UI server management (start/stop/status/restart) with Windows + Unix support. |
| src/QuickInstall/Sandbox/StyleManager.php | Enforce case-insensitive mount name conflicts; normalize discovered paths via realpath. |
| src/QuickInstall/Sandbox/StreamOutput.php | Use binary-safe stream modes (wb) for stdout/stderr fallbacks. |
| src/QuickInstall/Sandbox/SourceService.php | Add provider factory + git fetch rollback behavior on ensure failure. |
| src/QuickInstall/Sandbox/SourceProvider.php | Add git URL validation, case-insensitive keys, better FS error messages, runtime detection, and Windows PATH resolution. |
| src/QuickInstall/Sandbox/SeederWriter.php | Raise memory limit and add periodic cache/GC cleanup during heavy presets. |
| src/QuickInstall/Sandbox/Project.php | Add operation/file locking, atomic JSON writes, Windows path normalization, and name validation hardening. |
| src/QuickInstall/Sandbox/ProcessRunner.php | Add timeouts, Windows-safe execution path, output handling improvements, and redaction/hints. |
| src/QuickInstall/Sandbox/ExtensionManager.php | Harden extension name validation; normalize discovered paths via realpath. |
| src/QuickInstall/Sandbox/DoctorService.php | Add environment diagnostics for PHP/Docker/Git/Composer and key extensions/settings. |
| src/QuickInstall/Sandbox/DockerComposeWriter.php | Normalize runtime file line endings and migrate volume entries to long syntax bind mounts. |
| src/QuickInstall/Sandbox/CustomisationMountService.php | New service to unify single vs recursive mount flows and board refresh behavior. |
| src/QuickInstall/Sandbox/bootstrap.php | Centralize sandbox class requires into one bootstrap file. |
| src/QuickInstall/Sandbox/BoardService.php | Add safer replacement workflow (backup/restore), case-insensitive handling, and runtime resolution improvements. |
| src/QuickInstall/Sandbox/BoardRunner.php | Factor container removal, include stopped-container checks, harden writes/unlinks, and raise seeder memory limit. |
| src/QuickInstall/Sandbox/BoardRefreshService.php | New service to rewrite runtime and refresh running containers after mount/unmount changes. |
| src/QuickInstall/Sandbox/Application.php | Add doctor + ui:* commands, workspace locking, and CLI update notices. |
| README.md | Update docs to mention Dashboard UI, requirements, and cross-platform usage. |
| public/sandbox-ui.php | Add PHP built-in server router for Dashboard UI and static assets. |
| public/assets/sandbox-ui.js | Add Dashboard UI AJAX handling, toast rendering, and update banner dismissal. |
| public/assets/sandbox-ui.css | Add Dashboard UI styling (layout, cards, buttons, terminal/log, etc.). |
| public/assets/phpbb-logo.svg | Add phpBB logo asset for Dashboard UI branding. |
| package.json | Mark package as private (avoid accidental publishes). |
| docs/sandbox-cli.md | Document Dashboard UI commands and Windows-specific invocation details. |
| build.xml | Stop deleting composer.phar during build packaging. |
| bin/qi.cmd | Add Windows CMD launcher wrapper for bin/qi. |
| bin/qi | Switch to sandbox bootstrap include. |
| .github/workflows/cli-tests.yml | Add a Windows CI job (PHP 8.3) and launcher smoke test. |
| .github/CONTRIBUTING.md | Add Windows testing guidance and expectations for CLI/UI changes. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.